<!-- include tpl=head_lay -->
<script type="text/javascript" src="{func include_js rewrite.js}"></script>
<script>
    $(document).ready(function(){
        layui.use(['form','layer'],function () {
            form = layui.form;
            layer = layui.layer;
            update_func();
            form.on('select', function(data){
                if($(data.elem).attr('data') === 'ctrl'){
                    update_func();
                }
                let obj = $('#'+$(data.elem).attr('data'));
                var value = obj.val();
                if(value.indexOf(data.value) === -1){
                    if (value){
                        obj.val(obj.val()+'|'+data.value);
                    }else{
                        obj.val(obj.val()+data.value);
                    }
                }else{
                    if (data.value){
                        layer.msg('数据已经使用，不能重复',{icon:5,anim:6});
                    }
                    return false;
                }
            });
            $("#rewrite_submit").submit(function(){
                $(this).ajaxSubmit({
                    'url':"{url ctrl=rewrite func=save/}",
                    'type':'post',
                    'dataType':'json',
                    'success':function(rs){
                        if(rs.status == 'ok'){
                            var id = "{$id}";
                            var tip = id ? '规则编辑成功' : '添加成功';
                            layer.alert(tip,function(){
                                parent.layui.admin.events.closeThisTabs();
                            },'succeed');
                        }else{
                            $.dialog.alert(rs.content);
                            return false;
                        }
                    }
                });
                return false;
            });
        })
    });
</script>

<div class="layui-row layui-col-space15">
    <div class="layui-col-md12">
        <div class="layui-card">
            <div class="layui-card-header">
                <div><!-- if $id -->编辑<!-- else -->添加<!-- /if -->规则</div>
            </div>
            <div class="layui-card-body" pad15="">
                <form method="post" id="rewrite_submit">
                    <!-- if $id -->
                    <input type="hidden" name="id" id="id" value="{$id}"/>
                    <!-- /if -->
                    <div class="layui-form">

                        <div class="layui-form-item">
                            <label class="layui-form-label">主题</label>
                            <div class="layui-input-inline">
                                <input name="title" id="title" value="{$rs.title}" class="layui-input" type="text">
                            </div>
                            <!--<div class="layui-input-inline layui-input-company">分钟</div>-->
                            <div class="layui-form-mid layui-word-aux">方便后台管理</div>
                        </div>

                        <label class="layui-form-label"></label>
                        <div class="layui-form-mid layui-word-aux">
                            请手动填写正则，关于正则的一些信息教程，<a href="javascript:layer.open({type: 1, area:['600px'],title: '{lang正则手册}',content: $('#zzinfo'),offset: '100px'});void(0)">点这里阅读</a>！
                        </div>
                        <div class="layui-form-item" style="margin-bottom: 7px;">
                            <label class="layui-form-label">正则</label>
                            <div class="layui-input-inline long">
                                <input id="rule" name="rule" value="{$rs.rule}" class="layui-input" type="text">
                            </div>
                            <div class="layui-btn-group">
                                <input class="layui-btn" onclick="$('#rule').val('')" type="button" value="{lang清空}">
                                <input class="layui-btn" onclick="layer.open({type: 1, area:['600px'],title: '{lang正则手册}',content: $('#zzinfo'),offset: '100px'})" type="button" value="{lang正则手册}">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label"></label>
                                <div class="layui-btn-group">
                                <input type="button" value="{langPHPOK标识}" onclick="insert_input('([a-zA-Z][a-zA-Z0-9\\_\\-]+)')" class="layui-btn"/>
                                <input type="button" value="{lang字母+数字+联字符}" onclick="insert_input('([a-zA-Z0-9\\_\\-]+)')" class="layui-btn"/>
                                <input type="button" value="{lang数字}" onclick="insert_input('([0-9]+)')" class="layui-btn"/>
                                <input type="button" value="{lang斜扛}" onclick="insert_input('\\/')" class="layui-btn"/>
                                <input type="button" value="{langHTML结尾}" onclick="insert_input('\\.html$')" class="layui-btn"/>
                            </div>
                        </div>


                        <label class="layui-form-label"></label>
                        <div class="layui-form-mid layui-word-aux">
                            请填写目标网址，程序一般是：index.php?c=控制器&f=方法 或 index.php?id=标识
                        </div>
                        <div class="layui-form-item" style="margin-bottom: 7px;">
                            <label class="layui-form-label">目标网址</label>
                            <div class="layui-input-inline long">
                                <input  id="val" name="val" value="{$id ? $rs.val : 'index.php?'}" class="layui-input" type="text">
                            </div>
                            <div class="layui-btn-group">
                                <input class="layui-btn" onclick="$('#val').val('')" type="button" value="{lang清空}">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label"></label>
                                <div class="layui-btn-group">
                                    <input type="button" value="{lang控制器}" onclick="insert_input('{$sys.ctrl_id}=','val')"
                                           class="layui-btn"/>
                                    <input type="button" value="{lang方法}" onclick="insert_input('{$sys.func_id}=','val')"
                                           class="layui-btn"/>
                                    <input type="button" value="{lang分类}" onclick="insert_input('cate=','val')" class="layui-btn"/>
                                    <input type="button" value="{langID}" onclick="insert_input('id=','val')" class="layui-btn"/>
                                    <input type="button" value=" & " onclick="insert_input('&','val')" class="layui-btn"/>
                                    <input type="button" value="{lang\$1}" onclick="insert_input('\$1','val')" class="layui-btn"/>
                                    <input type="button" value="{lang\$2}" onclick="insert_input('\$2','val')" class="layui-btn"/>
                                    <input type="button" value="{lang\$3}" onclick="insert_input('\$3','val')" class="layui-btn"/>
                            </div>
                        </div>


                        <label class="layui-form-label"></label>
                        <div class="layui-form-mid layui-word-aux">
                            这里编辑通过参数格式化成想要的伪静态页，即动态链转伪静态页的生成规则
                        </div>
                        <div class="layui-form-item" style="margin-bottom: 7px;">
                            <label class="layui-form-label">格式化</label>
                            <div class="layui-input-inline long">
                                <input id="format" name="format" value="{$rs.format}" class="layui-input" type="text">
                            </div>
                            <div class="layui-btn-group">
                                <input class="layui-btn" onclick="$('#format').val('')" type="button" value="{lang清空}">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label"></label>
                                <div class="layui-btn-group">
                                    <input type="button" value="{lang控制器}" onclick="insert_input('[ctrl]','format')" class="layui-btn"/>
                                    <input type="button" value="{lang方法}" onclick="insert_input('[func]','format')" class="layui-btn"/>
                                    <input type="button" value="{lang分类}" onclick="insert_input('[cate]','format')" class="layui-btn"/>
                                    <input type="button" value="{lang标识ID}" onclick="insert_input('[id]','format')" class="layui-btn"/>
                                    <input type="button" value="{lang斜扛}" onclick="insert_input('/','format')" class="layui-btn"/>
                                    <input type="button" value="{lang其他变量}" onclick="insert_input('[]','format')" class="layui-btn"/>
                                    <input type="button" value="{langHTML结尾}" onclick="insert_input('.html','format')"
                                           class="layui-btn"/>
                            </div>
                        </div>



                        <label class="layui-form-label"></label>
                        <div class="layui-form-mid layui-word-aux">
                            请选择要操作的控制器，不清楚请填写project，多个项目请用“|”分开
                        </div>
                        <div class="layui-form-item" style="margin-bottom: 7px;">
                            <label class="layui-form-label">控制器</label>
                            <div class="layui-input-inline long">
                                <input name="ctrl" id="ctrl" value="{$rs.ctrl}" class="layui-input" type="text">
                            </div>
                            <div class="layui-input-inline">
                                <select lay-filter="ctrl" data="ctrl">
                                    <option value="">请选择...</option>
                                    <!-- loop from=$clist key=$key value=$value id=$tmpid -->
                                    <option value="{$key}">{$value}</option>
                                    <!-- /loop -->
                                </select>
                            </div>
                        </div>


                        <label class="layui-form-label"></label>
                        <div class="layui-form-mid layui-word-aux">
                            请选择控制器下的方法，不清楚请填写index，多个方法请用“|”分开
                        </div>
                        <div class="layui-form-item" style="margin-bottom: 7px;">
                            <label class="layui-form-label">方法</label>
                            <div class="layui-input-inline long">
                                <input name="func" id="func" value="{$rs.func}" class="layui-input" type="text">
                            </div>

                            <div class="layui-input-inline">
                                <select lay-filter="ctrl" data="func" id="func_select" name="func_select" onchange="update2(this.value,'func')">
                                    <option value="">请选择...</option>

                                </select>

                                <script>

                                </script>

                            </div>
                        </div>


                        <label class="layui-form-label"></label>
                        <div class="layui-form-mid layui-word-aux">
                            多个变量用英文“|”线隔开
                        </div>
                        <div class="layui-form-item" style="margin-bottom: 7px;">
                            <label class="layui-form-label">变量</label>
                            <div class="layui-input-inline long">
                                <input name="var" id="var" value="{$rs.var}" class="layui-input" type="text">
                            </div>
                            <div class="layui-btn-group">
                                <input class="layui-btn" onclick="$('#var').val('')" type="button" value="{lang清空}">
                            </div>
                        </div>
                        <div class="layui-form-item">
                            <label class="layui-form-label"></label>
                            <div class="layui-btn-group">
                                <input type="button" value="{lang控制器}" onclick="insert_input('ctrl','var','|')" class="layui-btn"/>
                                <input type="button" value="{lang方法}" onclick="insert_input('func','var','|')" class="layui-btn"/>
                                <input type="button" value="{lang分类}" onclick="insert_input('cate','var','|')" class="layui-btn"/>
                                <input type="button" value="{lang标识ID}" onclick="insert_input('id','var','|')" class="layui-btn"/>
                                <input type="button" value="{lang订单号}" onclick="insert_input('sn','var','|')" class="layui-btn"/>
                                <input type="button" value="{lang订单密码}" onclick="insert_input('passwd','var','|')"
                                       class="layui-btn"/>
                                <input type="button" value="{lang分割号}" onclick="insert_input('','var','|')" class="layui-btn"/>
                            </div>
                        </div>


                        <div class="layui-form-item">
                            <label class="layui-form-label">排序</label>
                            <div class="layui-input-inline" style="width: 80px">
                                <input name="sort" id="sort" value="{$rs.sort}" class="layui-input" type="text">
                            </div>
                            <!--<div class="layui-input-inline layui-input-company">分钟</div>-->
                            <div class="layui-form-mid layui-word-aux">很重要，会影响网址的解析，因此请仔细设置，值越小越往前靠</div>
                        </div>

                        <div class="layui-form-item layui-layout-admin">
                            <div class="layui-input-block">
                                <div class="layui-footer" style="left: 0;z-index:10">
                                    <input value="立即提交" type="submit" class="layui-btn">
                                </div>
                            </div>
                        </div>

                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

<!-- include tpl=foot_lay -->
<div id="zzinfo" style="display:none;height:400px;overflow-y:scroll;">
    <table class="wikitable layui-table">
        <tr>
            <th width="10%">字符</th>
            <th width="90%">描述</th>
        </tr>
        <tr>
            <th>\</th>
            <td>将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如，“<code>n</code>”匹配字符“<code>n</code>”。“<code>\n</code>”匹配一个换行符。串行“<code>\\</code>”匹配“<code>\</code>”而“<code>\(</code>”则匹配“<code>(</code>”。
            </td>
        </tr>
        <tr>
            <th>^</th>
            <td>匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 <code>\^</code></td>
        </tr>
        <tr>
            <th>$</th>
            <td>匹配输入字符串的结束位置。要匹配 $ 字符本身，请使用 <code>\$</code></td>
        </tr>
        <tr>
            <th>*</th>
            <td>匹配前面的子表达式零次或多次。例如，zo*能匹配“<code>z</code>”以及“<code>zoo</code>”。*等价于{0,}。</td>
        </tr>
        <tr>
            <th>+</th>
            <td>匹配前面的子表达式一次或多次。例如，“<code>zo+</code>”能匹配“<code>zo</code>”以及“<code>zoo</code>”，但不能匹配“<code>z</code>”。+等价于{1,}。
            </td>
        </tr>
        <tr>
            <th>?</th>
            <td>匹配前面的子表达式零次或一次。例如，“<code>do(es)?</code>”可以匹配“<code>does</code>”或“<code>does</code>”中的“<code>do</code>”。?等价于{0,1}。
            </td>
        </tr>
        <tr>
            <th>?</th>
            <td>当该字符紧跟在任何一个其他限制符（*,+,?，{<span style="font-family:Times New Roman; font-style:italic;">n</span>}，{<span
                    style="font-family:Times New Roman; font-style:italic;">n</span>,}，{<span
                    style="font-family:Times New Roman; font-style:italic;">n</span>,<span
                    style="font-family:Times New Roman; font-style:italic;">m</span>}）后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串“<code>oooo</code>”，“<code>o+?</code>”将匹配单个“<code>o</code>”，而“<code>o+</code>”将匹配所有“<code>o</code>”。
            </td>
        </tr>
        <tr>
            <th>.</th>
            <td>匹配除“<code>\</code><span style="font-family:Times New Roman; font-style:italic;"><code>n</code></span>”之外的任何单个字符。要匹配包括“<code>\</code><span
                    style="font-family:Times New Roman; font-style:italic;"><code>n</code></span>”在内的任何字符，请使用像“<code>(.|\n)</code>”的模式。
            </td>
        </tr>
        <tr>
            <th>(pattern)</th>
            <td>
                匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到，在VBScript中使用SubMatches集合，在JScript中则使用$0…$9属性。要匹配圆括号字符，请使用“<code>\(</code>”或“<code>\)</code>”。
            </td>
        </tr>
        <tr>
            <th>(?:pattern)</th>
            <td>匹配pattern但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用或字符“<code>(|)</code>”来组合一个模式的各个部分是很有用。例如“<code>industr(?:y|ies)</code>”就是一个比“<code>industry|industries</code>”更简略的表达式。
            </td>
        </tr>
        <tr>
            <th>(?=pattern)</th>
            <td>正向肯定预查，在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，“<code>Windows(?=95|98|NT|2000)</code>”能匹配“<code>Windows2000</code>”中的“<code>Windows</code>”，但不能匹配“<code>Windows3.1</code>”中的“<code>Windows</code>”。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。
            </td>
        </tr>
        <tr>
            <th>(?!pattern)</th>
            <td>正向否定预查，在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如“<code>Windows(?!95|98|NT|2000)</code>”能匹配“<code>Windows3.1</code>”中的“<code>Windows</code>”，但不能匹配“<code>Windows2000</code>”中的“<code>Windows</code>”。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始
            </td>
        </tr>
        <tr>
            <th>x|y</th>
            <td>匹配x或y。例如，“<code>z|food</code>”能匹配“<code>z</code>”或“<code>food</code>”。“<code>(z|f)ood</code>”则匹配“<code>zood</code>”或“<code>food</code>”。
            </td>
        </tr>
        <tr>
            <th>[xyz]</th>
            <td>字符集合。匹配所包含的任意一个字符。例如，“<code>[abc]</code>”可以匹配“<code>plain</code>”中的“<code>a</code>”。</td>
        </tr>
        <tr>
            <th>[^xyz]</th>
            <td>负值字符集合。匹配未包含的任意字符。例如，“<code>[^abc]</code>”可以匹配“<code>plain</code>”中的“<code>p</code>”。</td>
        </tr>
        <tr>
            <th>[a-z]</th>
            <td>字符范围。匹配指定范围内的任意字符。例如，“<code>[a-z]</code>”可以匹配“<code>a</code>”到“<code>z</code>”范围内的任意小写字母字符。</td>
        </tr>
        <tr>
            <th>[^a-z]</th>
            <td>负值字符范围。匹配任何不在指定范围内的任意字符。例如，“<code>[^a-z]</code>”可以匹配任何不在“<code>a</code>”到“<code>z</code>”范围内的任意字符。</td>
        </tr>
        <tr>
            <th>\d</th>
            <td>匹配一个数字字符。等价于[0-9]。</td>
        </tr>
        <tr>
            <th>\D</th>
            <td>匹配一个非数字字符。等价于[^0-9]。</td>
        </tr>
        <tr>
            <th>\n</th>
            <td>匹配一个换行符。等价于\x0a和\cJ。</td>
        </tr>
        <tr>
            <th>\r</th>
            <td>匹配一个回车符。等价于\x0d和\cM。</td>
        </tr>
        <tr>
            <th>\s</th>
            <td>匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。</td>
        </tr>
        <tr>
            <th>\S</th>
            <td>匹配任何非空白字符。等价于[^ \f\n\r\t\v]。</td>
        </tr>
        <tr>
            <th>\t</th>
            <td>匹配一个制表符。等价于\x09和\cI。</td>
        </tr>
        <tr>
            <th>\v</th>
            <td>匹配一个垂直制表符。等价于\x0b和\cK。</td>
        </tr>
        <tr>
            <th>\w</th>
            <td>匹配包括下划线的任何单词字符。等价于“<code>[A-Za-z0-9_]</code>”。</td>
        </tr>
        <tr>
            <th>\W</th>
            <td>匹配任何非单词字符。等价于“<code>[^A-Za-z0-9_]</code>”。</td>
        </tr>
    </table>
</div>
